home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML Instance.sea / XML Instance / Required / extplugin.jar / com / extensibility / plugin / PluginRegistry.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-07-31  |  3.9 KB  |  167 lines

  1. package com.extensibility.plugin;
  2.  
  3. import com.extensibility.plugin.api.ApplicationAccess;
  4. import java.io.File;
  5. import java.lang.reflect.Method;
  6. import java.util.Enumeration;
  7. import java.util.Hashtable;
  8. import java.util.Vector;
  9.  
  10. public class PluginRegistry {
  11.    public static final int API_VERSION_1_1 = 65537;
  12.    public static final int API_VERSION_1_2 = 65538;
  13.    private static Class[] methodParams;
  14.    private static PluginRegistry globalRegistry;
  15.    private int apiVersion = 0;
  16.    private Hashtable apiListing = new Hashtable();
  17.    private PluginClassLoader loader = new PluginClassLoader();
  18.    private ApplicationAccess appAccess = null;
  19.    // $FF: synthetic field
  20.    private static Class class$Lcom$extensibility$plugin$PluginRegistry;
  21.  
  22.    public static PluginRegistry getRegistry() {
  23.       if (globalRegistry == null) {
  24.          globalRegistry = new PluginRegistry();
  25.       }
  26.  
  27.       return globalRegistry;
  28.    }
  29.  
  30.    public static void setRegistry(PluginRegistry var0) {
  31.       globalRegistry = var0;
  32.    }
  33.  
  34.    public void registerPluginsInFolder(File var1) {
  35.       if (var1.isDirectory()) {
  36.          1 var10001 = new 1;
  37.          if (this == null) {
  38.             throw null;
  39.          } else {
  40.             var10001.<init>(this);
  41.             String[] var2 = var1.list(var10001);
  42.             Vector var3 = this.loadJars(var1, var2);
  43.             this.callMainClasses(var3);
  44.          }
  45.       }
  46.    }
  47.  
  48.    public boolean registerPlugin(String var1, Class var2, String var3, int var4) {
  49.       if (var4 > this.apiVersion) {
  50.          return false;
  51.       } else {
  52.          Object var5 = this.apiListing.get(var1);
  53.          Vector var6;
  54.          if (var5 == null) {
  55.             var6 = new Vector();
  56.             this.apiListing.put(var1, var6);
  57.          } else {
  58.             var6 = (Vector)var5;
  59.          }
  60.  
  61.          var6.addElement(var2);
  62.          return true;
  63.       }
  64.    }
  65.  
  66.    public int getPluginApiCount(String var1) {
  67.       Object var2 = this.apiListing.get(var1);
  68.       int var3 = 0;
  69.       if (var2 != null) {
  70.          Vector var4 = (Vector)var2;
  71.          var3 = var4.size();
  72.       }
  73.  
  74.       return var3;
  75.    }
  76.  
  77.    public Object getNthPlugin(String var1, int var2) {
  78.       Object var3 = this.apiListing.get(var1);
  79.       Object var4 = null;
  80.       if (var3 != null) {
  81.          Vector var5 = (Vector)var3;
  82.          Class var6 = (Class)var5.elementAt(var2);
  83.  
  84.          try {
  85.             if (var6 != null) {
  86.                var4 = var6.newInstance();
  87.             }
  88.          } catch (Exception var8) {
  89.          }
  90.       }
  91.  
  92.       return var4;
  93.    }
  94.  
  95.    public ApplicationAccess getAppAccess() {
  96.       return this.appAccess;
  97.    }
  98.  
  99.    public void setAppAccess(ApplicationAccess var1) {
  100.       this.appAccess = var1;
  101.    }
  102.  
  103.    protected void callMainClasses(Vector var1) {
  104.       Enumeration var2 = var1.elements();
  105.  
  106.       while(var2.hasMoreElements()) {
  107.          String var3 = (String)var2.nextElement();
  108.  
  109.          try {
  110.             Class var4 = this.loader.loadClass(var3, true);
  111.             Method var5 = var4.getDeclaredMethod("registerPlugin", methodParams);
  112.             Object[] var6 = new Object[]{this};
  113.             var5.invoke((Object)null, var6);
  114.          } catch (LinkageError var7) {
  115.          } catch (Exception var8) {
  116.          }
  117.       }
  118.  
  119.    }
  120.  
  121.    protected Vector loadJars(File var1, String[] var2) {
  122.       Vector var3 = new Vector();
  123.       var3.ensureCapacity(var2.length);
  124.  
  125.       for(int var4 = 0; var4 < var2.length; ++var4) {
  126.          File var5 = new File(var1, var2[var4]);
  127.          String var6 = null;
  128.          if (var5.isFile()) {
  129.             try {
  130.                var6 = this.loader.enumerateClasses(var5);
  131.             } catch (Exception var8) {
  132.             }
  133.          }
  134.  
  135.          if (var6 != null) {
  136.             var3.addElement(var6);
  137.          }
  138.       }
  139.  
  140.       return var3;
  141.    }
  142.  
  143.    // $FF: synthetic method
  144.    static Class class$(String var0) {
  145.       try {
  146.          return Class.forName(var0);
  147.       } catch (ClassNotFoundException var2) {
  148.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  149.       }
  150.    }
  151.  
  152.    protected PluginRegistry() {
  153.       String var1 = System.getProperty("java.specification.version");
  154.       if (var1 == null) {
  155.          this.apiVersion = 65537;
  156.       } else {
  157.          Float var2 = new Float(var1);
  158.          this.apiVersion = (int)(var2 * 65536.0F);
  159.       }
  160.  
  161.    }
  162.  
  163.    static {
  164.       methodParams = new Class[]{class$Lcom$extensibility$plugin$PluginRegistry != null ? class$Lcom$extensibility$plugin$PluginRegistry : (class$Lcom$extensibility$plugin$PluginRegistry = class$("com.extensibility.plugin.PluginRegistry"))};
  165.    }
  166. }
  167.